package com.wgy.day18.接口.接口的默认方法;
/*
从java 8开始,接口里允许定义默认方法
格式: public default 返回值类型 方法名称(参数列表){
              //方法体
}
备注: 接口中的默认方法可以,可以解决接口升级的问题,即接口新添加的默认方法 前期的实现类不需要覆盖重写也不会报错,并且实现类对象也可以调用新添加的默认方法

接口默认方法的使用:
1.可以通过接口实现类对象,直接调用.
2.也可以被实现类进行覆盖重写.

* */

public class InterfaceDefault {
    public static void main(String[] args) {
        //创建实现类对象
        MyInterfaceDefaultImpl impl =new   MyInterfaceDefaultImpl();
        impl.methodAbs();   //调用抽象方法,实际运行的是右侧实现类中覆盖重写的方法
        impl.methodAbs2();
        impl.methodDefault();//调用默认方法.实际运行看右侧的实现类, 实现类中没有对接口的默认方法覆盖重写 就会向上找接口的
        System.out.println("=============");

        //创建实现类2对象2
        MyInterfaceDefaultImpl2 impl2 =new   MyInterfaceDefaultImpl2();
        impl2.methodAbs();// //调用抽象方法,实际运行的是右侧实现类2中覆盖重写的方法
        impl2.methodAbs2();
        impl2.methodDefault();//调用默认方法.实际运行看右侧的实现类, 实现类中对接口的默认方法覆盖重写 会使用实现类的默认方法


    }
}
